<?php

namespace App\Services;

use App\Models\Product;
use App\Models\SimpleCart;
use Illuminate\Support\Facades\Session;

class CartService
{
    /**
     * 获取购物车中的所有商品
     *
     * @return array
     */
    public function getCartItems()
    {
        return Session::get('cart', []);
    }

    /**
     * 添加商品到购物车
     *
     * @param int $productId
     * @param int $quantity
     * @return bool
     */
    public function addToCart($productId, $quantity = 1)
    {
        $product = Product::find($productId);
        
        if (!$product) {
            return false;
        }
        
        // 检查是否有微信用户登录
        if (!auth('wechat')->check()) {
            return false;
        }
        
        // 检查是否已存在购物车记录
        $cartItem = SimpleCart::where('user_id', auth('wechat')->id())
            ->where('product_id', $productId)
            ->first();
        
        if ($cartItem) {
            // 更新数量
            $cartItem->quantity += $quantity;
            $cartItem->save();
        } else {
            // 创建新记录
            SimpleCart::create([
                'user_id' => auth('wechat')->id(),
                'product_id' => $productId,
                'quantity' => $quantity
            ]);
        }
        
        return true;
    }

    /**
     * 更新购物车中商品的数量
     *
     * @param string $itemId
     * @param int $quantity
     * @return bool
     */
    public function updateQuantity($itemId, $quantity)
    {
        $cart = Session::get('cart', []);
        
        foreach ($cart as &$item) {
            if ($item['id'] == $itemId) {
                $item['quantity'] = $quantity;
                Session::put('cart', $cart);
                return true;
            }
        }
        
        return false;
    }

    /**
     * 从购物车中移除商品
     *
     * @param string $itemId
     * @return bool
     */
    public function removeFromCart($itemId)
    {
        $cart = Session::get('cart', []);
        
        foreach ($cart as $key => $item) {
            if ($item['id'] == $itemId) {
                unset($cart[$key]);
                Session::put('cart', array_values($cart));
                return true;
            }
        }
        
        return false;
    }

    /**
     * 清空购物车
     *
     * @return void
     */
    public function clearCart()
    {
        Session::forget('cart');
    }

    /**
     * 获取购物车总价
     *
     * @return float
     */
    public function getCartTotal()
    {
        $total = 0;
        $cart = Session::get('cart', []);
        
        foreach ($cart as $item) {
            // 添加类型检查
            if (!is_array($item) || !isset($item['product'])) {
                continue;
            }
            $total += $item['product']->price * $item['quantity'];
        }
        
        return $total;
    }

    /**
     * 获取购物车中商品的总数量
     *
     * @return int
     */
    public function getCartCount()
    {
        // 检查是否有微信用户登录
        if (!auth('wechat')->check()) {
            return 0;
        }
        
        // 从数据库获取购物车商品数量
        $count = SimpleCart::where('user_id', auth('wechat')->id())->sum('quantity');
        
        return $count;
    }

    /**
     * 检查用户是否已登录
     *
     * @return bool
     */
    public function isLoggedIn()
    {
        return auth('wechat')->check();
    }
}